package com.bestcem.xm.ticket.enums;

import lombok.Getter;
import lombok.ToString;

/**
 * 工单中所有的事件枚举
 *
 * @author XiaoYunSong <ys.xiao@idiaoyan.com>
 * @version v1.0
 * @date 2021/8/10 17:24
 */
@Getter
@ToString
public enum TicketEventEnum {
    /**
     * 系统创建工单
     */
    SYSTEM_CREATED("系统创建工单", 0),
    /**
     * 工单跟进中
     */
    FOLLOWING("工单跟进中", 1),
    /**
     * 工单跟进将逾期提醒
     */
    FOLLOW_OVERDUE_REMIND("工单跟进将逾期提醒", 2),
    /**
     * 工单跟进已逾期提醒
     */
    FOLLOW_OVERDUE("工单跟进已逾期提醒", 3),
    /**
     * 提交工单跟进记录
     */
    COMMIT_FOLLOWED("提交工单跟进记录", 4),
    /**
     * 工单审核中
     */
    AUDITING("工单审核中", 5),
    /**
     * 提交工单审核记录
     */
    COMMIT_AUDITED("提交工单审核记录", 6),
    /**
     * 工单审核将逾期提醒
     */
    AUDIT_OVERDUE_REMIND("工单审核将逾期提醒", 7),
    /**
     * 工单审核已逾期提醒
     */
    AUDIT_OVERDUE("工单审核已逾期提醒", 8),
    /**
     * 工单手工关闭
     */
    MANUAL_CLOSED("工单手工关闭", 9),
    /**
     * 工单系统关闭
     */
    SYSTEM_CLOSED("工单系统关闭", 10),
    /**
     * 跟进转派
     */
    TRANSFER_FOLLOW("跟进转派", 11),
    /**
     * 工单处理完成
     */
    FINISH("工单处理完成", 12),
    /**
     * 工单处理失败
     */
    FAILED("工单处理失败", 13),
    /**
     * 工单无需处理
     */
    UNDEED_DEAL("工单无需处理", 14),

    /**
     * 工单转派
     */
    TRANSFER("工单转派", 15),

    /**
     * 工单重新打开
     */
    REOPEN("工单重新打开", 16),

    /**
     * 用户创建工单
     */
    USER_CREATED("用户创建工单", 17);

    private final String name;

    private final Integer index;

    TicketEventEnum(String name, Integer index) {
        this.name = name;
        this.index = index;
    }

    /**
     * 根据 index 获取枚举实体
     * 找不到则返回 null
     *
     * @param index 枚举index
     * @author XiaoYunSong <ys.xiao@idiaoyan.com>
     * @date 2021/8/18 14:44
     */
    public static TicketEventEnum getByIndex(Integer index) {
        for (TicketEventEnum value : values()) {
            if (value.getIndex().equals(index)) {
                return value;
            }
        }
        return null;
    }
}
